Closed Bug 1810541 Opened 2 years ago Closed 2 years ago

All block icons from all DLL flicker once one is changed from unblock to block state or vice versa

Categories

(Firefox :: Launcher Process, defect)

Firefox 110
All
Windows
defect

Tracking

()

VERIFIED FIXED
111 Branch
Tracking Status
firefox-esr102 --- unaffected
firefox109 --- unaffected
firefox110 --- wontfix
firefox111 --- verified

People

(Reporter: bmaris, Assigned: gstoll)

References

(Blocks 1 open bug)

Details

Attachments

(2 files)

Attached image Gif showing the issue

Found in

  • Nightly 110.0a1

Affected versions

  • Nightly 110.0a1

Tested platforms

  • Affected platforms: Windows 10, Windows 11, Windows 7
  • Unaffected platforms: macOS, Linux

Preconditions

Steps to reproduce

  1. Visit about:third-party
  2. Hit CTRL + O and dismiss the File Menu
  3. Refresh the about page
  4. Click the black minus icon for any DLL showing in the list eg. drivefsext.dll
  5. Click Restart Later
  6. Click the red X button from the same DLL as step 4.
  7. Click Restart Later
  8. If needed repeat steps 4-7 a few times.

Expected result

  • Icon is correctly changed from black to red for the selected DLL and no other changes are seen on other DLL icons.

Actual result

  • All the other black minus icons (from other DLLs) flicker when the one focused is changed.

Regression range

  • Not a regression since this is reproducible since this feature was turned on (2022-12-31)
Assignee: nobody → gstoll

This is due to the code that disables all the block buttons while we're processing the request to block a module (and then re-enables them afterwards). This code is to avoid race conditions when updating the blocklist.

Let me see if there's a cleaner way to do this.

Status: NEW → ASSIGNED

The code that was causing the flicker was put in place to avoid a race condition where we might try to update the blocklist at the same time as a previous update. This code should serve the same purpose without having to disable and reenable all the buttons, which can cause flicker.

(I believe this should be safe since JS event handling is single threaded, so two calls to onBlock() can't start at the same time; we only have to guard against one happening in the middle of the await call. If this is wrong please let me know :-) )

In practice updating the blocklist happens very fast, so although it's a little misleading to have a button be enabled but not do anything when a user clicks it, I think it's the right call to make the buttons not flicker. (on my machine I can't even make two calls happen at the same time; the first one finishes seemingly-instantaneously)

I am not planning on uplifting this to Beta since it's a minor issue.

Pushed by gstoll@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/181220236f95 avoid flicker when blocking or unblocking a third-party module r=Gijs
Status: ASSIGNED → RESOLVED
Closed: 2 years ago
Resolution: --- → FIXED
Target Milestone: --- → 111 Branch

The patch landed in nightly and beta is affected.
:gstoll, is this bug important enough to require an uplift?

  • If yes, please nominate the patch for beta approval.
  • If no, please set status-firefox110 to wontfix.

For more information, please visit auto_nag documentation.

Flags: needinfo?(gstoll)

Verified using latest Nightly 111.0a1 on Windows 10, 11 and 7 that the icons do not flicker anymore when blocking/unblocking a DLL.

Flags: needinfo?(gstoll)
Status: RESOLVED → VERIFIED
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: